import axios from 'axios'
import store from '@/store'

axios.defaults.baseURL = 'http://apis.imooc.com/api/'

const icode = 'B64A3225920D8A8D'

// 请求拦截器
axios.interceptors.request.use(config => {
  // 全局 Loading 计数器递增
  store.commit('addLoading')

  // 全局 Error 初始化
  store.commit('setError', {
    status: false
  })

  config.params = {
    ...config.params,
    icode
  }

  if (config.data instanceof FormData) {
    config.data.append('icode', icode)
  } else {
    config.data = {
      ...config.data,
      icode
    }
  }

  return config
})

// 响应拦截器
axios.interceptors.response.use(response => {
  // 全局 Loading 计数器递减
  store.commit('delLoading')

  return response
}, err => {
  // 全局 Loading 计数器递减
  store.commit('delLoading')

  let message = ''

  try {
    message = err.response.data.error
  } catch {
    message = '系统异常'
  }

  store.commit('setError', {
    status: true,
    message: message
  })

  return Promise.reject(err)
})

export default axios
